package com.ruyuan2020.im.design.x;

import java.util.ArrayList;
import java.util.List;

public class ComplexObject  implements Cloneable{
    private List<Data> dataList = new ArrayList<>();

    public ComplexObject() {
        // 模拟从数据库或外部资源中加载大量数据
        System.out.println("Loading data...");
        for (int i = 0; i < 10000; i++) {
            dataList.add(new Data()); // 假设Data是一个简单的数据类
        }
        System.out.println("Data loaded.");
    }

    // 实现Cloneable接口的clone方法，用于创建对象的副本
    @Override
    public ComplexObject clone() {
        try {
            return (ComplexObject) super.clone(); // 调用Object类的clone方法进行浅复制
        } catch (CloneNotSupportedException e) {
            e.printStackTrace(); // 在正常情况下，CloneNotSupportedException不会发生
            return null;
        }
    }
    // 为了展示，添加一个简单的获取数据的方法
    public List<Data> getData() {
        return dataList;
    }



    // 假设Data是一个简单的内部类，用于存储数据
    public static class Data {
        private String value;

        public Data() {
            value = "Some data"; // 在实际应用中，这里可能是从数据库或其他来源获取的数据
        }

        @Override
        public String toString() {
            return value;
        }
    }
}
